package com.wangshouyu.mp.qrcode;

import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.gson.annotations.SerializedName;

import java.io.Serializable;
import java.util.Objects;

/**
 * @author 王守钰
 * @date 2021年01月23日 13:30
 * @description 微信二维码
 */
public class QrCode implements Serializable {

    /**
     * 该二维码有效时间，以秒为单位。
     * 最大不超过2592000（即30天），此字段如果不填，则默认有效期为30秒。
     */
    @SerializedName(value = "expire_seconds")
    @JsonProperty(value = "expire_seconds")
    @JSONField(name = "expire_seconds")
    private Long expireSeconds;

    /**
     * 二维码类型
     */
    @SerializedName(value = "action_name")
    @JsonProperty(value = "action_name")
    @JSONField(name = "action_name")
    private String actionName;

    /**
     * 二维码详细信息
     */
    @SerializedName(value = "action_info")
    @JsonProperty(value = "action_info")
    @JSONField(name = "action_info")
    private ActionInfo actionInfo;

    public Long getExpireSeconds() {
        return expireSeconds;
    }

    public void setExpireSeconds(Long expireSeconds) {
        this.expireSeconds = expireSeconds;
    }

    public String getActionName() {
        return actionName;
    }

    public void setActionName(String actionName) {
        this.actionName = actionName;
    }

    public ActionInfo getActionInfo() {
        return actionInfo;
    }

    public void setActionInfo(ActionInfo actionInfo) {
        this.actionInfo = actionInfo;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        QrCode qrCode = (QrCode) o;
        return Objects.equals(expireSeconds, qrCode.expireSeconds) && Objects.equals(actionName, qrCode.actionName) && Objects.equals(actionInfo, qrCode.actionInfo);
    }

    @Override
    public int hashCode() {
        return Objects.hash(expireSeconds, actionName, actionInfo);
    }

    @Override
    public String toString() {
        return "QrCode{" +
                "expireSeconds=" + expireSeconds +
                ", actionName='" + actionName + '\'' +
                ", actionInfo=" + actionInfo +
                '}';
    }

    public QrCode(Long expireSeconds, String actionName, ActionInfo actionInfo) {
        this.expireSeconds = expireSeconds;
        this.actionName = actionName;
        this.actionInfo = actionInfo;
    }

    public QrCode() {
    }
}
